1. Field of the Invention
The present invention relates to the field of sound generation devices and, more particularly, to regulating usage of polyphony within such devices.
2. Description of the Related Art
The Musical Instrument Digital Interface (MIDI) protocol can be used to control MIDI compatible sound generation devices such as synthesizers, computers, and the like. In general, MIDI data can specify which notes are to be played, the timing of those notes, and what type of instruments are to be used to play designated notes. In this manner, a MIDI device can interpret a MIDI file to render an audible version of a musical composition.
MIDI devices are limited with respect to the number of voices or notes that can be played simultaneously. This characteristic is referred to as “polyphony”. For example, a device having 64-voice polyphony can play 64 different notes simultaneously, assuming each note can be generated using a single voice. MIDI devices can have varying abilities with respect to polyphony. In illustration, a computer-based system may be able to play more than one-hundred voices simultaneously while a mobile communication device, such as a mobile phone having limited computing resources, may only be able to play 8 voices simultaneously.
For a MIDI device to play a composition requiring more voices than are available on the device, particular notes must not be played by selectively silencing or ignoring the notes. Solutions for overcoming polyphony limitations, referred to as “note stealing”, have varied from manufacturer to manufacturer. This has resulted in a randomization of which notes of a composition, as specified by the MIDI data, are played from one manufacturer's device to the next. In consequence, the same MIDI file can sound vastly different when played on different MIDI devices lacking sufficient polyphony to play the composition as intended by the composer.
One proposed solution has been the Scalable Polyphony (SP) MIDI protocol. The SP MIDI protocol attempts to make content scalable across devices with different polyphonic capabilities. SP MIDI defines new MIDI messages that can indicate how MIDI data should be performed by devices with different polyphony.
Generally, different priorities are assigned to MIDI channels. One or more initialization messages, such as an SP-MIDI Maximum Instantaneous Polyphony (MIP) Message and a Device Initialization Message, are sent or read. The MIP message informs the SP MIDI device about the polyphony requirements for each MIDI Channel as well as the channel priority order for a given composition. The Device Initialization message sets the SP MIDI device to a proper mode, such as General MIDI or Down Loadable Song (DLS) format. The SP MIDI device then applies channel masking to the MIDI data such that only those notes on selected MIDI channels, i.e. those having a high priority, are played.
While SP MIDI can address polyphony limitations of MIDI devices, the protocol does have disadvantages. One such disadvantage stems from the fact that SP MIDI relies upon MIDI channel selection to address polyphony scaling. MIDI channel selection as a means of polyphony scaling can negatively impact the quality of music that results. Since more than one type of instrument can be assigned to a single MIDI channel, an instrument part that is characteristic of a composition may be inadvertently silenced if that instrument is assigned to a channel that is to be masked. As such, channel selection may ignore aspects of musicality such as which instruments are used for playing a composition as well as the sonic quality of the instruments that are used. Presently, no existing solution for polyphony scaling accounts for instrument selection or the sonic quality of the instruments selected for playing a composition.